/**
 * Notes: API配置文件
 * Ver : WeCollege Server API 1.0.0
 * Date: 2025-01-27
 * Description: 统一管理API配置，方便切换环境和修改基础URL
 */

// API环境配置
const API_ENVIRONMENTS = {
  // 开发环境
  development: {
    baseURL: 'http://localhost:8080',
    timeout: 10000,
    debug: true
  },
  
  // 测试环境
  testing: {
    baseURL: 'https://test-api.wecollege.com',
    timeout: 15000,
    debug: true
  },
  
  // 生产环境
  production: {
    baseURL: 'https://api.wecollege.com',
    timeout: 20000,
    debug: false
  }
};

// 当前环境 (可以通过此处切换环境)
const CURRENT_ENV = 'development';

// 获取当前环境配置
const getCurrentConfig = () => {
  return API_ENVIRONMENTS[CURRENT_ENV] || API_ENVIRONMENTS.development;
};

// 导出配置
module.exports = {
  // 当前环境名称
  CURRENT_ENV,
  
  // 所有环境配置
  API_ENVIRONMENTS,
  
  // 当前环境配置
  ...getCurrentConfig(),
  
  // API版本
  API_VERSION: 'v1',
  
  // 请求头配置
  DEFAULT_HEADERS: {
    'Content-Type': 'application/json',
    'Accept': 'application/json',
    'X-Client-Type': 'miniprogram',
    'X-Client-Version': '1.0.0'
  },
  
  // 错误码映射
  ERROR_CODES: {
    SUCCESS: 200,
    UNAUTHORIZED: 401,
    FORBIDDEN: 403,
    NOT_FOUND: 404,
    SERVER_ERROR: 500,
    NETWORK_ERROR: -1,
    TIMEOUT_ERROR: -2,
    UNKNOWN_ERROR: -999
  },
  
  // 业务模块映射 (将小程序业务模块映射到后端API)
  MODULE_MAPPING: {
    // 表白墙 -> 帖子
    board: 'post',
    
    // 兼职 -> 帖子 (不同类型)
    job: 'post',
    
    // 失物招领 -> 帖子 (不同类型)
    lost: 'post',
    
    // 闲置买卖 -> 帖子 (不同类型)
    second: 'post',
    
    // 用户管理
    user: 'user',
    
    // 评论管理
    comment: 'comment',
    
    // 文件上传
    upload: 'upload'
  },
  
  // 类型ID映射 (小程序业务类型 -> 后端typeId)
  TYPE_ID_MAPPING: {
    board: 'board',      // 表白墙
    job: 'job',          // 兼职招聘
    lost: 'lost',        // 失物招领
    second: 'second',    // 闲置买卖
    news: 'news',        // 新闻公告
    activity: 'activity' // 活动信息
  },
  
  // 缓存配置
  CACHE_CONFIG: {
    // 默认缓存时间 (秒)
    DEFAULT_TTL: 300,
    
    // 不同接口的缓存时间
    API_TTL: {
      'user/profile': 600,      // 用户信息缓存10分钟
      'post/list': 60,          // 帖子列表缓存1分钟
      'post/detail': 300,       // 帖子详情缓存5分钟
      'comment/list': 30        // 评论列表缓存30秒
    }
  },
  
  // 重试配置
  RETRY_CONFIG: {
    // 最大重试次数
    MAX_RETRIES: 3,
    
    // 重试延迟 (毫秒)
    RETRY_DELAY: 1000,
    
    // 需要重试的错误码
    RETRY_ERROR_CODES: [500, 502, 503, 504, -1, -2]
  }
};